Skip to content

fix(opencode): admit exact MLLO console consumers - #2127

Open
seonghobae wants to merge 1 commit into
mainfrom
codex/hyosung-opencode-admission
Open

fix(opencode): admit exact MLLO console consumers#2127
seonghobae wants to merge 1 commit into
mainfrom
codex/hyosung-opencode-admission

Conversation

@seonghobae

Copy link
Copy Markdown
Contributor

Problem and change

Canonical OpenCode intake rejects the MLLO console and design owner even when the live dispatch allowlist permits them. Admit only HYOSUNG-ITX-AI-Business-Department/llm-gateway-console and llm-gateway-console-design in both existing intake guards. Dispatcher identity, live target allowlist, PR metadata and private-target checks remain required.

The JSON inventory is a proposed delta, not live permission evidence. Cross-organization App access, formal review publication and required-status authority require a protected-owner canary before consumer adoption. Related Strix admission: #2113.

Validation

128 passed, 1 skipped across focused contracts. Native actionlint workflow validation passed with ShellCheck disabled. Full lint using an isolated repair for actionlint 1.7.12's macOS stdin deadlock completed with 29 inherited findings, byte-for-byte identical to clean protected base fb17ef5; full lint is not green. No installed tool or workflow gate was changed. Details and reproduction are in docs/doctoring/hyosung-opencode-consumer-admission.md.

Preserve dispatcher identity and live allowlist gates. Record local validation and inherited lint findings; runtime authority remains unverified.

Signed-off-by: Seongho Bae <me@seonghobae.me>

Commit-Message-Assisted-by: Codex (OpenAI Codex)
@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 38 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 5f49408f-61f5-4e0d-9f32-8e9509346e47

📥 Commits

Reviewing files that changed from the base of the PR and between fb17ef5 and 64c2cf8.

📒 Files selected for processing (7)
  • .github/workflows/opencode-review-dispatch.yml
  • .github/workflows/opencode-review.yml
  • docs/doctoring/hyosung-opencode-consumer-admission.md
  • scripts/ci/opencode_repository_dispatch_targets.json
  • tests/test_opencode_agent_contract.py
  • tests/test_opencode_hyosung_repository_admission.py
  • tests/test_pr_review_autofix_nvidia_nim_contract.py

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@seonghobae
seonghobae enabled auto-merge (squash) September 12, 2026 17:26
@seonghobae

Copy link
Copy Markdown
Contributor Author

@coderabbitai approve Please independently review the exact current head, including retained dispatcher authority and inherited lint findings. Formal current-head approval and required checks remain mandatory.

@opencode-agent
opencode-agent Bot disabled auto-merge September 12, 2026 17:27
@coderabbitai

coderabbitai Bot commented Sep 12, 2026

Copy link
Copy Markdown

Tip

For best results, initiate chat on the files or code changes.

🧩 Analysis chain

🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== Current HEAD and working tree =='
git rev-parse HEAD
git status --short
git branch --show-current

echo '== Pull request metadata and checks =='
gh pr view 2127 --repo ContextualWisdomLab/.github \
  --json number,title,headRefName,headRefOid,baseRefName,baseRefOid,state,isDraft,mergeStateStatus,reviewDecision,statusCheckRollup

echo '== Changed files against PR base =='
base_oid="$(gh pr view 2127 --repo ContextualWisdomLab/.github --json baseRefOid --jq .baseRefOid)"
git diff --name-status "$base_oid"...HEAD
git diff --check "$base_oid"...HEAD

echo '== Relevant policy/dispatcher references in changed source and documentation =='
rg -n -C 4 --hidden \
  -g '!**/.git/**' \
  -e 'HYOSUNG-ITX-AI-Business-Department/llm-gateway-console' \
  -e 'llm-gateway-console-design' \
  -e 'dispatcher' \
  -e 'allowlist' \
  -e 'private-target' \
  .

echo '== Workflow and lint-related changed content =='
git diff -- "$base_oid"...HEAD -- \
  '.github/workflows/**' \
  'docs/doctoring/hyosung-opencode-consumer-admission.md' \
  ':!**/node_modules/**'

Length of output: 241145


🏁 Script executed:

#!/bin/bash
set -euo pipefail

base_oid="fb17ef556f94f673234aa557254ae52779e9a7b0"

echo '== Complete current-head diff =='
git diff --find-renames --find-copies "$base_oid"...HEAD -- \
  .github/workflows/opencode-review.yml \
  .github/workflows/opencode-review-dispatch.yml \
  scripts/ci/opencode_repository_dispatch_targets.json \
  tests/test_opencode_agent_contract.py \
  tests/test_opencode_hyosung_repository_admission.py \
  tests/test_pr_review_autofix_nvidia_nim_contract.py \
  docs/doctoring/hyosung-opencode-consumer-admission.md

echo '== Dispatcher authorization and intake sections =='
sed -n '120,215p' .github/workflows/opencode-review-dispatch.yml
sed -n '230,295p' .github/workflows/opencode-review.yml

echo '== Current-head PR checks and reviews =='
gh pr view 2127 --repo ContextualWisdomLab/.github \
  --json headRefOid,mergeStateStatus,reviewDecision,statusCheckRollup,reviews \
  --jq '{headRefOid, mergeStateStatus, reviewDecision, reviews: [.reviews[] | {author: .author.login, state, commit: .commit.oid}], checks: [.statusCheckRollup[] | {name, status, conclusion, workflowName}]}'

echo '== Protected branch requirements visible to this token =='
gh api repos/ContextualWisdomLab/.github/branches/main/protection \
  --jq '{required_status_checks, required_pull_request_reviews, required_signatures, enforce_admins}' \
  || true

Length of output: 25069


🏁 Script executed:

#!/bin/bash
set -euo pipefail

echo '== Failed current-head OpenCode check =='
gh run view 34708230636 --repo ContextualWisdomLab/.github --log-failed || true

echo '== Current check state =='
gh pr view 2127 --repo ContextualWisdomLab/.github \
  --json headRefOid,mergeStateStatus,reviewDecision,statusCheckRollup \
  --jq '{headRefOid, mergeStateStatus, reviewDecision, checks: [.statusCheckRollup[] | select(.status != "COMPLETED" or (.conclusion != "SUCCESS" and .conclusion != "SKIPPED" and .conclusion != "NEUTRAL")) | {name,status,conclusion,workflowName,detailsUrl}]}'

echo '== Current workflow file blob IDs =='
git rev-parse HEAD:.github/workflows/opencode-review-dispatch.yml
git rev-parse HEAD:.github/workflows/opencode-review.yml
git rev-parse fb17ef556f94f673234aa557254ae52779e9a7b0:.github/workflows/opencode-review-dispatch.yml
git diff --check fb17ef556f94f673234aa557254ae52779e9a7b0...HEAD

Length of output: 15977


@seonghobae I cannot approve the current head.

I reviewed 64c2cf86635391305ae1e24836beb7b07ec9a6b7. The two intake guards admit only the specified MLLO console repositories. The dispatch workflow still requires the same allowlisted dispatcher actor and sender, the live target allowlist, and live PR metadata.

The current-head opencode-review check failed. It reports no APPROVED or CHANGES_REQUESTED verdict from opencode-agent for this exact head. CodeQL, Semgrep, pip-audit, Noema, Strix, and runtime-quality checks are also incomplete. The PR is BLOCKED.

The documented lint findings are described as inherited, but they do not replace the required current-head verdict and checks. Please obtain the exact-head OpenCode verdict and wait for all required checks to complete successfully.

You are interacting with an AI system.

@seonghobae
seonghobae enabled auto-merge (squash) September 12, 2026 17:28
@opencode-agent
opencode-agent Bot disabled auto-merge September 12, 2026 17:28

@cwl-noema-review cwl-noema-review Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Noema LLM review

Changes admit exactly two HYOSUNG-ITX-AI-Business-Department repositories (llm-gateway-console and llm-gateway-console-design) into the canonical OpenCode intake paths. The regexes are anchored and preserve the existing metadata checks (PR number, expected head SHA, dispatch actor/sender, live allowlist). JSON mirror and tests are consistent with the admission scope; the doctoring record correctly notes that the live repository variable and cross-org App permissions still require separate reconciliation/verification. No confirmed regression or security over-admission was found.

Reviewed changed lines

  • .github/workflows/opencode-review-dispatch.yml:188 (RIGHT): Anchored alternation admits only exact ContextualWisdomLab repo names or the exact Hyosung console/console-design names; trailing suffixes like -extra fail because (-design)? is literal and the pattern is end-anchored. Existing PR number, actor/sender, and metadata checks remain.
  • .github/workflows/opencode-review.yml:261 (RIGHT): Required-caller admission uses the same anchored pattern and still requires a 40-char expected head SHA and valid PR number. No unapproved external repository is admitted by this change.
  • scripts/ci/opencode_repository_dispatch_targets.json:57 (RIGHT): Adds the two exact Hyosung targets to the hand-maintained mirror. This is configuration-source parity only; live variable update is explicitly left as a deployment prerequisite.
  • tests/test_opencode_hyosung_repository_admission.py:27 (RIGHT): Negative/positive cases cover exact names, near names, extra suffixes, and other orgs, and align with the blocked guard semantics.

Adversarial validation

  • .github/workflows/opencode-review-dispatch.yml:188 (RIGHT) falsified: Adding the Hyosung alternation could let names such as llm-gateway-console-extra or llm-gateway-console-design-extra pass the dispatch guard. — The optional (-design)? group only consumes the literal string -design; -extra is not consumed, and the end anchor $ rejects it. Any accepted value still passes the remaining PR_NUMBER, ALLOWED_DISPATCH_TARGETS, actor, and sender checks.
  • .github/workflows/opencode-review.yml:261 (RIGHT) falsified: The required-caller guard might admit an unapproved external repository name or skip the live-head protection. — The regex is end-anchored and only matches the exact two Hyosung names or ContextualWisdomLab repos. The same guard still requires PR_NUMBER to be a positive integer and EXPECTED_HEAD_SHA to be a 40-hex SHA before writing admitted=true.
  • Residual risk: Runtime cross-org access is not proven by this PR: the live OPENCODE_REPOSITORY_DISPATCH_TARGETS variable and OIDC-exchanged App read/comment/status permissions for the Hyosung repos still need deployment-time verification. The changed code fails closed on missing allowlist or metadata mismatch, so the residual risk is operational denial rather than over-admission.

Findings

  • No blocking findings.
  • Result: APPROVE
  • Head SHA: 64c2cf86635391305ae1e24836beb7b07ec9a6b7
  • Reviewer credential: noema-review-github-app-refresh
  • Actor: cwl-noema-review[bot]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant